﻿###User Defined Function###
_WinAPI_CreateFileMapping

###Description###
Erzeugt oder öffnet ein benanntes oder unbenanntes File-Mapping-Objekt für eine angegebene Datei.

###Syntax###
#include <WinAPIFiles.au3>
_WinAPI_CreateFileMapping ( $hFile [, $iSize = 0 [, $sName = '' [, $iProtect = 0x0004 [, $tSecurity = 0]]]] )

###Parameters###
@@ParamTable@@
$hFile
	Handle der Datei von welcher das File-Mapping-Objekt erzeugt werden soll.
	Wenn dieser Parameter (-1) ist, so muss der aufrufende Prozess die Größe für das File-Mapping-Objekt im $iSize Parameter angeben.
	In diesem Falle erzeugt <a href="_WinAPI_CreateFileMapping.htm">_WinAPI_CreateFileMapping()</a> ein File-Mapping-Objekt mit einer bestimmten Größe welches von der Systemseitendatei statt einer Datei im Dateisystem unterstützt wird.
$iSize
	[optional] Die maximale Größe des File-Mapping-Objektes.
	Wenn dieser Parameter 0 ist (Standard), so ist die maximale Größe des File-Mapping-Objektes gleich der aktuellen Datei welches $hFile identifiziert.
$sName
	[optional] Der Name des File-Mapping-Objektes.
$iProtect
	[optional] Gibt den Seitenschutz des File-Mapping-Objektes an und kann einen der folgenden Werte annehmen:
		$PAGE_EXECUTE_READ
		$PAGE_EXECUTE_READWRITE
		$PAGE_EXECUTE_WRITECOPY
		$PAGE_READONLY
		$PAGE_READWRITE (Default)
		$PAGE_WRITECOPY

	Eine Anwendung kann einen oder mehrere der folgenden Attribute für das File-Mapping-Objekt angeben und mit den vorgegangenen Seitenschutzwerten kombinieren.
		$SEC_COMMIT
		$SEC_IMAGE
		$SEC_LARGE_PAGES
		$SEC_NOCACHE
		$SEC_RESERVE
		$SEC_WRITECOMBINE
$tSecurity
	[optional] Die $tagSECURITY_ATTRIBUTES Struktur welche angibt ob das zurückgegebene Handle von einem Childprozess geerbt werden kann.
	Wenn dieser Parameter 0 ist (Standard), dann kann das Handle nicht geerbt werden und das File-Mapping-Objekt erhält einen Standardsicherheitsdeskriptor.
@@End@@

###ReturnValue###
@@ReturnTable@@
Erfolg:	Das Handle zu dem neu erstellten File-Mapping-Objekt.
	Wenn das Objekt vor diesem Funktionsaufruf existiert, so gibt die Funktion das Handle zum bereits existierenden Objekt (mit ihrer aktuellen Datei und nicht die angegebene) und setzt das @extended Flag zu $ERROR_ALREADY_EXISTS (183).
Fehler:	0, @extended wird auf <a href="_WinAPI_GetLastError.htm">_WinAPI_GetLastError()</a> gesetzt.
@@End@@

###Remarks###
Nachdem ein File-Mapping-Objekt erstellt wurde, darf die Größe der Datei nicht die Größe des File-Mapping-Objektes überschreiten; sollte das passieren, so stehen nicht alle Dateiinhalte zum Teilen zur Verfügung.

Mehrere Prozesse können die Sicht der selben Datei teilen indem sie entweder ein einzelnes File-Mapping-Objekt verwenden oder separate File-Mapping-Objekte verwenden welche auf die selbe Datei zeigen. Ein einzelnes File-Mapping-Objekt kann durch mehrere Prozesse, mittels Vererbung beim Prozesserstellen, dem Duplizieren eines Handles, oder dem Öffnen eines File-Mapping-Objektes mittels Dateiname, geteilt werden.

Ein File-Mapping-Objekt mappt tatsächlich nicht die Sicht in einen Prozessadressraum. Die <a href="_WinAPI_MapViewOfFile.htm">_WinAPI_MapViewOfFile()</a> Funktionen mappen eine Sicht einer Datei in den Prozessadressraum.

Gemappte Sichten eines File-Mapping-Objektes behalten interne Referenzen zum Objekt und ein File-Mapping-Objekt kann nicht geschlossen werden bis diese Referenzen alle freigegeben wurden.
Deshalb muss die Anwendung, um ein File-Mapping-Objekt komplett zu schließen, alle gemappten Sichten mit der <a href="_WinAPI_UnmapViewOfFile.htm">_WinAPI_UnmapViewOfFile()</a> Funktion unmappen und das Handles des File-Mapping-Objektes mittels <a href="_WinAPI_CloseHandle.htm">_WinAPI_CloseHandle()</a> schließen.
Die Reihenfolge, in welcher diese Funktionen aufgerufen werden, spielt keine Rolle.

###Related###
_WinAPI_CloseHandle, _WinAPI_UnmapViewOfFile

###See Also###
@@MsdnLink@@ CreateFileMapping

###Example###
@@IncludeExample@@
